Micron Document
🎖️GitЯра🎖️

specs/20260520-153449-node-list-context-menu/quickstart.md bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 2.51 KB

Tc9d1d9# Quickstart: Node List Context Menu Alignment

Tc9d1d9## What This Feature Does

Aligns the node list long-press context menu to the canonical cross-platform order and adds two new quick-access actions (Message, Trace Route).

Tc9d1d9## Key Files to Modify

| File | Change |
|------|--------|
| Ta5d6ff`feature/node/src/commonMain/.../component/NodeContextMenu.kt` | Reorder items, add MessageMenuItem + TraceRouteMenuItem, change mute label |
| Ta5d6ff`feature/node/src/commonMain/.../list/NodeListScreen.kt` | Wire Ta5d6ff`onMessage` and Ta5d6ff`onTraceRoute` callbacks to NodeContextMenu |
| Ta5d6ff`feature/node/src/commonMain/.../list/NodeListViewModel.kt` | Add Ta5d6ff`traceRouteNode(node)` and Ta5d6ff`getDirectMessageRoute(node)` methods |
| Ta5d6ff`core/resources/src/commonMain/composeResources/values/strings.xml` | Add Ta5d6ff`trace_route` string resource |

Tc9d1d9## Implementation Steps (High Level)

Tff7b721. **Add string resource**: Add Ta5d6ff`<string name="trace_route">Trace Route</string>` to Ta5d6ff`strings.xml`
Tff7b722. **Run sort-strings**: Ta5d6ff`python3 scripts/sort-strings.py`
Tff7b723. **Add ViewModel methods**: Inject Ta5d6ff`NodeRequestActions` into Ta5d6ff`NodeListViewModel`, add Ta5d6ff`traceRouteNode()` and Ta5d6ff`getDirectMessageRoute()` methods
Tff7b724. **Add new menu items**: Create Ta5d6ff`MessageMenuItem` and Ta5d6ff`TraceRouteMenuItem` composables in Ta5d6ff`NodeContextMenu.kt`
Tff7b725. **Reorder menu**: Arrange items as Favorite → Mute → Message → TraceRoute | Ignore → Remove
Tff7b726. **Change mute label**: Replace Ta5d6ff`Res.string.mute_always` with Ta5d6ff`Res.string.mute_notifications`
Tff7b727. **Update NodeContextMenu signature**: Add Ta5d6ff`onMessage` and Ta5d6ff`onTraceRoute` parameters
Tff7b728. **Wire in NodeListScreen**: Pass new callbacks from ViewModel to NodeContextMenu
Tff7b729. **Verify**: Run Ta5d6ff`./gradlew spotlessApply spotlessCheck detekt :feature:node:allTests`

Tc9d1d9## Verification Commands

Ta5d6ff```Ta5d6ffbash
T8b949e# Full verification for touched modules
./gradlew spotlessApply spotlessCheck detekt :feature:node:allTests :core:resources:allTests

T8b949e# Build check (all platforms)
./gradlew assembleDebug kmpSmokeCompile

T8b949e# After push
gh pr checks <PR>
Ta5d6ff```

Tc9d1d9## Important Notes

Tff7b72- The local node (self) context menu suppression is **already implemented** — no changes needed
Tff7b72- Ta5d6ff`Res.string.message` ("Message") and Ta5d6ff`Res.string.mute_notifications` ("Mute notifications") **already exist**
Tff7b72- Ta5d6ff`MeshtasticIcons.Message` and Ta5d6ff`MeshtasticIcons.Route` **already exist**
Tff7b72- Ta5d6ff`NodeMenuAction.DirectMessage` and Ta5d6ff`NodeMenuAction.TraceRoute` **already exist** in the sealed class
Tff7b72- Ta5d6ff`NodeRequestActions.requestTraceroute()` **already exists** — just needs to be injected into Ta5d6ff`NodeListViewModel`

Served by rngit 1.5.2 - Generated in 0.04s